/*
 * disco.c
 *
 *  Created on: 17/02/2013
 *      Author: alex
 */

#include "../headers/disco.h"

// Función que calcula la distancia de la intersección con un cono
long double IntDisco(long double Xe, long double Ye, long double Ze,
						long double Xd, long double Yd, long double Zd,
						long double Xc, long double Yc, long double Zc,
						long double A, long double B, long double C, long double D, long double RadioM, long double Radiom,
						objeto_t *objeto)
{
    long double Xi,Yi,Zi;
    long double t, distancia;

    // Averiguar la intersección con el plano
	t = -((A * Xe + B * Ye + C * Ze + D) / (A * Xd + B * Yd + C * Zd));

    Xi = Xe + t*Xd;
    Yi = Ye + t*Yd;
    Zi = Ze + t*Zd;

    distancia = sqrt(pow(Xi-Xc,2) + pow(Yi-Yc,2) + pow(Zi-Zc,2));
    if (distancia <= RadioM && distancia >= Radiom)
    	if (Cortar(objeto,Xi,Ye,Zi) == 1)
        	return t;
        else
        	return -1.0;
    else
        return -1.0;
}

long double* NormalDisco(long double N[3])
{
    long double *Normal;
    Normal = (long double*)malloc(3 * sizeof(long double));
  	Normal[0] = N[0];
  	Normal[1] = N[1];
  	Normal[2] = N[2];

  	return Normal;
}
